public class CompanySalary {
	// 抽象类：员工（定义抽象方法 earnings 计算年薪）
	abstract static class Employee {
		public abstract double earnings();
	}

	// 年工：年薪固定
	static class YearWorker extends Employee {
		// 【代码1】实现年薪计算（示例：年薪20000）
		public double earnings() {
			return 20000;
		}
	}

	// 月工：月薪×12
	static class MonthWorker extends Employee {
		// 【代码2】实现年薪计算（示例：月薪5000×12）
		public double earnings() {
			return 12 * 5000;
		}
	}

	// 周工：周薪×52
	static class WeekWorker extends Employee {
		// 【代码3】实现年薪计算（示例：周薪1000×52）
		public double earnings() {
			return 52 * 1000;
		}
	}

	// 公司类：管理员工并计算总薪水
	static class Company {
		private Employee[] employee; // 上转型对象数组（存储各种员工）

		// 构造方法：初始化员工数组
		public Company(Employee[] employee) {
			this.employee = employee;
		}

		// 计算总薪水
		public double totalSalary() {
			double salaries = 0;
			// 【代码4】遍历数组，累加所有员工的年薪
			for (int i = 0; i < employee.length; i++) {
				salaries += employee[i].earnings(); // 多态：调用实际子类的earnings()
			}
			return salaries;
		}
	}

	// 主类：测试
	public static void main(String[] args) {
		// 创建不同类型的员工
		Employee[] employees = {
				new YearWorker(),
				new MonthWorker(),
				new WeekWorker()
		};

		// 创建公司并计算总薪水
		Company company = new Company(employees);
		System.out.println("公司全年总薪水为：" + company.totalSalary() + "元");
	}
}